Method and system for controlling a machine tool with direct transfer of machining data

ABSTRACT

Method and system for a direct transmission of motion path data ( 310 ) from a generating system ( 204 ) to a control system ( 205 ) for use in controlling a servo-driven machine. For example, a machine tool for machining stock material, and the data generating system includes a computer-aided-design software package ( 301 ). Tool paths for directing the tool members of the machine tool can be extracted from a design file opened by the CAD software through the operation interface of the CAD software ( 302 ). Alternatively, the design file can be used to specify motion paths rather than end product geometry. The CAD interpreter application extracts the motion path data from the design file, eliminating the need to translate the data into another or intermediate form for controlling the machine tool.

FIELD OF THE INVENTION

The present invention relates to the field of digitally interfacing arobot, machine tool or other servo-driven machine with a system forproviding the data for controlling that servo-driven machine. Thepresent invention also relates to the field of machining equipment partsfrom appropriate material with a numerically controlled or computercontrolled machine tool that roughs and/or finishes an initial piece ofmaterial according to the specifications defining a part to be made.More specifically, the present invention relates to a new paradigm forcontrolling the operation of such machine tools by directly transferringthe machining data defining the part to be made from a CAD/CAMapplication to the machine controller.

BACKGROUND OF THE INVENTION

There are many machines in modem industry with moving parts that aredriven by servo-motors. These machines include industrial robots,coordinate measuring machines, machine tools and the like. These groupof machines are referred to generally herein as “servo-driven machines.”

Typically, a master system provides data to a servo-controller that, inturn, controls the servo-motors to appropriately operate and move thecomponents of the servo-driven machine. Machines tools are a prominentexample of such servo-operated machines with which the present inventionis particularly concerned.

When machines are first developed or are produced on a limited basis,parts specific to those machines must be custom made from appropriatematerial. This is generally accomplished through “machining,” a processin which a piece or stock of material is mechanically cut, ground,drilled and finished as necessary to create the desired part. Themachines used to transform raw materials into specified parts arereferred to hereafter as “machine tools.” Modem machine tools are highlysophisticated and precisely controlled so as to create parts accordingto exacting specifications. Most such modem machine tools are controlledby computers that process precise numerical instructions defining thepart to be made.

The first numerically controlled machine tool was a 3-axis millingmachine built in 1952. Numbers were used to specify movement of themilling head in a 3-axis system to machine a desired part. However, themachine tool was mechanically set by hand according to the specificationnumbers as the machining progressed. As electronic technology hassubsequently progressed, “numerical control” machine tools haveincorporated increasingly sophisticated electronics to automate themachining process. Today, numerically controlled machine tools includecomputer processors and electronic memory units (RAM and ROM). Thus,today's machine tools are computer controlled and referred to as“computer numerical control machines.”

Early computer controlled machines received input from punched tape. Theinstructions recorded on these tapes were both input/output (“I/O”)commands (e.g, turn on/off spindle or coolant, setting default feed rateand speed, etc.) and motion commands (e.g., move to some x y z positionin a linear or circular fashion.) The language that these instructionswere written in has come to be called M&G code. M&G code can be thoughtof as analogous to assembly language for personal computers; it is thelowest level of programming for machine tools and is generally acceptedby all machine tools regardless of make or model. Even though the firstnumerically controlled machines were built about fifty years ago, westill program machine tools using this same M&G code language with onlyminor modifications.

Over the past 50 years dozens of companies have attempted to build theideal machine tool controller. These controllers have consisted ofcustom hardware components and highly specialized one-of-a-kindoperating systems. Many of these have been proprietary closed systems.While open architecture for the hardware of these control systems may beappearing on the horizon, machine tools of today, for the most part, usetechnology that is decades old. Where proprietary control is maintainedover machine tool hardware controller technologies, programming themachine can only be performed through the M&G code environment.

M&G code uses words, or individual commands, and blocks, or lines in asingle file or program. All the commands on one line are read and allare executed simultaneously. In order to create an M&G program, it isnecessary to calculate all the geometry for all the tool paths, e.g.,the line segments and arcs that the tool tip of the machine tool passesthrough while machining the desired part. From this geometry, motion andI/O commands are calculated. These commands must then be written in M&Gcode and the code must be entered into the controller. Originally, theM&G code had to be manually entered into the controller or punched intoMylar or paper tape that was then fed into a reader on the controller.Even today, it is a long and tedious task to write an M&G program tomachine a complex part.

In the late 50's and early 60's many new and more flexible programminglanguages came into existence. Automatically Programmed Tools (“APT”)was one of the first of these new languages. Using APT, an engineerdefines the geometry of the machine tool, the geometry of the tool tip,and the machining parameters that control the I/O of the machine tool.However, due to the proprietary and inconsistent nature of availablemachine systems, the commands created using APT must ultimately betranslated in the more basic M&G code. APT applications performcalculations to generate a Cutter Location (“CL”) file based on thecommands in the APT program. The CL file is an ASCII file that containsthe geometry of the paths that the tool tip of the machine tool mustpass through during the machining process. This CL file is thentranslated into M&G code using a program called a postprocessor.

In the 60's and 70's, as computers became less expensive and morepowerful, more mechanical design was done using Computer-Aided-Design(“CAD”) programs. Computer-Aided-Manufacturing (“CAM”) programs allowusers to use the geometry defined in CAD programs to plan out the toolpaths for programming a machine tool. CAD, CAM and CAD/CAM programs areconsidered herein as belonging to a general class of software packagesreferred to generally as “design applications.” The tool paths definedby a CAM application are exported in the form of CL or APT files, whichstill must be translated into M&G code before being transferred to themachine controller. This practice is still the standard in use today.

A typical process of using a CAD/CAM application to program a machinetool is illustrated in FIG. 1. As shown in FIG. 1, the CAD/CAMapplication is run on a work station (100). Using the CAD/CAMapplication, a CAD/CAM file (101) is created which specifies thegeometry for the both the machine tool and the part to be made. Files,such as file (101) containing design information created by a CAD/CAM orsimilar software package are referred to herein generally as “designfiles.”

The CAD/CAM application, or perhaps a separate application, then usesthe CAD/CAM file to calculate the cutter location data for the machinetool tip throughout the machining process and creates a CL file (102).The CL file (102) is an ASCII file. The CL file (102) can then betranslated into M&G code (103), which is also an ASCII file. Thetranslation form CL file (102) to M&G code (103) is typically performedby a post processor. The M&G code (103) is then transmitted to themachine tool controller (104) which uses the code to control the machinetool (not shown) throughout the process of machining the specified part.

Starting with the export of the CL file (102) from the CAD/CAM software,each CL file is uni-directionally associated with the parent CAD/CAMfile (101). Thus, any modification to the parent CAD/CAM file (101) willnot be reflected in an exported CL file (102) and would requiregeneration of a new “child” ASCII CL file (102), modification alwaysflowing from parent to child. Similarly, modification of a child file(102), perhaps by a machinist preparing the M&G code file, would noteffect a modification or correction of the parent design file (101).

As a design evolves, this unidirectional flow of data makes the task ofkeeping all relevant files current and deleting obsolete files veryproblematic. Consequently, there is a need in the art for a method andsystem of better controlling a machine tool that facilitates themodification, updating and management of control files being provided toa machine tool controller.

A further problem arise in the variation of even the “standard” M&G codebetween machine tool controllers. In reality, M&G codes are notconsistent from machine tool to machine tool. Efforts have been made tostandardize M&G codes, but have not yet succeeded. This problem ariseprincipally from the fact that the M&G standards do not have theflexibility to implement many of the functions that some advancedprocess machine tools make available. The manufacturers of theseadvanced machine tools have, of necessity, extended existing standardsusing unique new commands to force new machining technologies onto acode architecture not otherwise capable of supporting thesetechnologies.

For example, many modern machine tool controllers are capable ofdirecting the machine tool to machine a true Non-Uniform RationalB-Spline curve (“NURBS”). Even though it is not part of the M&G codestandard, these controllers recognize non-standard M&G codes as codesfor NURBS.

The effect is that programming interfaces and languages now vary bymachine manufacturer and model, even when purporting to be based onstandard M&G code. Consequently, there is a need in the art for a methodand system that avoids the problems of inconsistent M&G code versionsbetween machine tools of different make and model.

In CL files and M&G code, geometry is represented as a series of pointsthat the tip of the cutting tool passes through in order to manufacturethe geometry. These points define the path of the cutting tool. Thispath is comprised of straight-line segments and circular or helicalarcs. Paths that are neither linear nor circular are approximately bydiscrete points or small line segments. Sculpted and free form surfacesare increasingly used in consumer products. CAD vendors have made greatstrides in their software to model complex curves, surfaces, and solids,but the tools and techniques used to manufacture them are the same onesthat have been in use for decades.

A complex surface may be represented inside the CAD program with asingle equation, but may need to be represented as thousands of linesegments in the instructions provided to the machine tool controller inorder to get the required accuracy. There is no way to avoid this lossin accuracy while using the traditional data flow illustrated in FIG. 1.

As mentioned above, there are some very expensive machine toolcontrollers that have the ability to handle complex paths such as NURBS.This allows such machine tools to manufacture complex surfaces fasterand smoother than with linear interpolation. The problem is incommunicating the specification for the desired NURBS to the machinetool controller. In order to communicate with the machine toolcontroller, the NURBS specified in the CAD/CAM design file (perhapsusing a single equation for each curve) must be translated into the linesegment geometry used by M&G code. The machine tool controller may thentranslate the line segment instructions of the M&G code into the NURBScommand used by the machine tool (specified perhaps by interpolating aNURBS curve through a series of points). This conversion of a NURBS intoline segments and then back into a true NURBS expression results in aneedless loss of accuracy in defining the NURBS.

Consequently, there is a further need in the art for a system and methodthat avoids the needless loss of accuracy associated with transmittingone NURBS representation created by a CAD/CAM application to a possibledifferent NURBS representation used by an advanced machine toolcontroller through the mediacy of line-segment-based M&G code.

SUMMARY OF THE INVENTION

It is an object of the present invention to meet the above-describedneeds and others. Specifically, it is an object of the present inventionto provide an improved system and method of programming a machine toolcontroller to machine a specified part based on data generated with aCAD/CAM or other design application. It is a further object of thepresent invention to provide a system and method of programming amachine tool controller that avoids the problems associated withmanaging a series of child files that reflect the evolution of the partdesign in a parent design file.

It is a still further object of the present invention to provide asystem and method of programming a machine tool controller that avoidsthe problems caused by the variation in advanced commands among thevarious versions of M&G code used in different makes and models ofmachine tools. And, it is a further object of the present invention toprovide a system and method of programming a machine tool controllerthat avoids needless loss of accuracy in specifying curves, such asNURBS, associated with translating representations of those curvesthrough line segment approximations used in, for example, M&G code.

Additional objects, advantages and novel features of the invention willbe set forth in the description which follows or may be learned by thoseskilled in the art through reading these materials or practicing theinvention. The objects and advantages of the invention may be achievedthrough the means recited in the attached claims.

In summary, the present invention provides for a conceptual integrationof the traditional CAD workstation and a machine tool controller. Themachine tool controller preferably includes two processors, or twocomputers each providing a processor. The first processor executes adesign application, i.e. a CAD, CAD/CAM or similar software package,that can be used to generate, review or modify a design file. The secondprocessor executes the software required for controlling the machinetool.

The control of the machine tool can be accomplished entirely by thesoftware running on the second processor. This software, which mayinclude several Applications or objects, is generally referred to as“motion control software.” No additional hardware architecture isrequired as part of the machine tool controller.

Motion path data specifies the path or paths along which the tool heador heads of the machine tool must be moved to manufacture the desiredproduct Motion path data can be extracted directly from the design fileif the application program interface (API) of the design application,e.g., a CAD/CAM package, is open and available. The motion controlsoftware can then use that tool path data to drive the machine tool andproduce the specified product.

Where the API of the design application is unavailable, the designapplication, e.g., a CAD/CAM package, could pass motion path data to themotion control software using an API set of the Direct Machining motioncontrol software. The motion control software can then use the tool pathdata to drive the machine tool and produce the specified product.

Preferably, the motion path data is passed in the form of a C++ motionobject that specifies the position and orientation of the tool head orheads of the machine tool and any point in any tool path. Preferably,the motion object includes three other object: a rates object thatdetermines feed rates and speed rates for control of elements of theservo-driven machine; a velocity profile generator object forcontrolling velocity transitions in those motion paths; and a pathobject containing information defining each motion path.

The motion path data extracted from the CAD system will typically be ina Cartesian coordinate system. Consequently, the motion control softwaretranslates the Cartesian tool path data into an appropriate referenceframe from which servo control signals for driving servo-motors of themachine tool can be generated by a servo controller application.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate the present invention and are apart of the specification. Together with the following description, thedrawings demonstrate and explain the principals of the presentinvention.

FIG. 1 is a block diagram illustrating the conventional systems and datastructures used in programming a machine tool controller.

FIG. 2 is a block diagram illustrating a machine tool controller systemaccording to the present invention.

FIG. 3 is a more detailed block diagram of the processing unit shown inFIG. 2.

FIG. 4 is a more detailed block diagram of the servo-controller objectand system interface shown in FIG. 2, according to a first embodiment.

FIG. 5 is a more detailed block diagram of the servo-controller objectand system interface shown in FIG. 2, according to a second embodiment.

FIG. 6 is a block diagram of the motion object generated by the CADInterpreter of FIG. 3.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention provides a new, open, software architecture fordigital control interfaces. As will be recognized by those of skill inthe art, this new interface architecture can be utilized in any systemin which control data is sent to a servo-controlled machine that isinterfaced with a control system.

A preferred application of the digital control interface andaccompanying principles of the present invention is to the machine toolcontroller of a machine tool for making machine parts according topredetermined specifications. For example, the present inventionprovides a new paradigm in which it is possible to utilize the abilitiesof existing design applications, such as CAD/CAM packages, and machinetool controllers to more directly and efficiently transfer aCAD-generated design of a part into the instructions necessary toappropriately control the machine tool. The process of the presentinvention will be referred to as “Direct Machining.”

Direct Machining eliminates the need for ASCII files, such as CL filesand M&G Code files, that exist external to the CAD design file. Rather,the machine tool controller is enabled to read the original CAD designfile and extract therefrom all relevant machining data required tocontrol the machine tool to make the specified product.

A preferred embodiment of this particular application of the presentinvention will now be described with reference to the Figures. As shownin FIG. 2, a machine tool controller (200) according to the presentinvention may incorporate some of the principal features of aconventional CAD workstation (100). Specifically, the controller (200)may include a first processor (203) on which a CAD software package isexecuted. This processor (205) is connected to both a display device(201), e.g., a cathode ray tube monitor, liquid crystal display or thelike, and a user input device (202), e.g., a keyboard and mouse,trackball, joystick or the like. Consequently, a computer aided designcan be created or modified on the hardware of the machine toolcontroller (200) rather than at a separate workstation.

Of course, a design file generated at a separate CAD workstation couldalso be transmitted to the processor (203) for display, review and/ormodification on the hardware (201, 202) of the machine tool controller(200). The CAD file could be transferred to the machine tool controller(200), for example, on a floppy disk or by any other means of filetransfer including over a wired or wireless network connection betweenthe workstation and the controller (200).

In the example of FIG. 2, the first processor (203) is part of aprocessing unit (205) which also contains a second processor (204).Generally speaking, the first processor (203) runs the CAD or CAD/CAMsoftware package or other design application, while the second processor(204) runs the software necessary to use the data generated by the CADsoftware to control the machine tool accordingly.

The software executing on the second processor (204) is referred togenerally as “motion control software” and is a complete system forcontrolling the machine tool. No additional controller hardware isneeded.

A system interface (206) is provided between the machine tool controller(200) and the machine tool (not shown in FIG. 2) so that the software ofthe second processor (204) can communicate with and control the machinetool. A connection (207) is provided between the second processor (204)and the system interface (206). The system interface (206) will bedescribed in more detail below.

While the dual-processor unit (200) illustrated in FIG. 2 is preferred,the present invention can also be practiced with two separate computerunits, e.g., two PC's, each providing a respective first or secondprocessor as described herein. Windows® NT-type processors can be usedin implementing the present invention.

In order to best accomplish Direct Machining, it is necessary to haveboth a CAD/CAM system and a machine controller with known architecturesto enable access to their internal functions. For example, to machinethe specified part, a mathematical representation of each machine toolpath, i.e., motion path data, must be created from the design of thepart to be made.

CAD or CAD/CAM packages have an Application Program Interface (API). TheAPI is an interface between the operating system and the designapplication. The API defines the way in which the design applicationcommunicates with the operating system, and the services the operatingsystem makes available to the design application.

Direct Machining will work best if the motion control softwarecontrolling the machine tool could access the design application throughits API and directly take the tool paths for the machine tool out of thedesign file opened by the design application Unfortunately, conventionalCAD/CAM packages do not seem to have publicly available APTs with thefunctionality necessary to accomplish this extraction. However, if theAPI of the design application is available, the best implementation ofthe present invention might be to simply take the machine tool pathsdirectly from the design file data through the API of the designapplication. This extraction would preferably be performed by thesoftware running on the second processor (204). These machine tool pathscan then be used by the machine controller software of the secondprocessor (204) to control the machine tool to make the specified part.

Where, as is generally the case, the API for a CAD/CAM package is notavailable, the principles of the present invention can still provide forDirect Machining. In this case, the motion control software will providean API set that the CAD/CAM package can call to pass tool pathinformation to the Direct Machining Software.

To understand how tool paths are passed to the controller in the presentinvention, it is necessary to understand something about thearchitecture of the software being executed on the first (203) andsecond (204) processors. As shown in FIG. 3, there are two principalapplications running on the dual-processor system of the presentinvention: the CAD Interpreter (301) and the Motion Controller (305).Consistent with the explanation above, and as shown in FIG. 3, the CADInterpreter (301) is preferably executed on the first processor (203).While the Motion Controller (305) is preferably executed on the secondprocessor (204).

The CAD Interpreter (301) is considered a design application and is ableto understand the design file (309) created with a CAD package andextract therefrom the relevant machining information, i.e., the machinetool paths represented by the data in the design file (309). The CADInterpreter (301) needs almost no information about the controller orthe machine tool that will be controlled to make the specified part.However, it is the CAD Interpreter (301) that provides the motion pathdata that the Motion Controller (305) will use to guide the tool headsof the machine tool.

As will be described in more detail below, the Motion Controller (305)is an application running on the second processor (204), is part of themotion control software of the present invention and receives the toolpath data (310) from the CAD Interpreter (301) on the first processor(203). The Motion Controller (305) is responsible for translating thetool path data (310) from the CAD Interpreter (301) into data that canbe used to appropriately control the machine tool to make the specifiedproduct. The Motion Controller (305) also determines move tangency. TheMotion Controller (305) contains two subsystems that accomplish thesetasks.

The motion path data (310) provided by the CAD Interpreter (301)typically specifies tool paths in a Cartesian coordinate system. TheMotion Controller (305) first executes a Motion Planner (307) to map thetool path data from Cartesian space to joint-space. Joint-space is acoordinate system which defines the possible paths of the tool head orheads of the machine tool. From the joint-space data, a TrajectoryPlanner (308) calculates the actuator values required to appropriatelymove the tool head or heads of the machine tool through the specifiedpaths.

As shown in FIG. 3, the actuator values are then transmitted to aservo-controller application (306) which is also part of the motioncontrol software of the present invention. The servo-controller (306) isresponsible for performing the servo-control loops in order for the toolhead or heads of the machine tool to move through the specified toolpaths that will result in manufacture of the desired part from the stockmaterial on the machine tool.

Preferably, the system of the present invention employs objects writtenusing the C++ computer language. C++ objects are data structures thatcan have both members (sub data structures or variables) and methods(functions that can be called on the objects) associated with them.Functions can also “ask” an object a question by calling an appropriatefunction on that object. The “answer” is received through the returnvalue of the function.

C++ objects also have the properties of inheritance and polymorphism.Inheritance describes the ability of an object class to inheritproperties from a parent class. As such, any specific members or methodsdefined for the child (or derived) class, will also have all themembers, methods, and properties of the parent class. Consequently, anobject of the derived class can be treated as either a member of thechild class or as a member of the parent class. Polymorphism allows thatall classes derived from the same parent class can have the sameinterface, so that objects can treat them externally as the parentclass. However, when the functions in that interface are called, thebehavior of the object can be very different, depending on the object'sderived class.

The Motion Controller (305) contains the member objects (307 and 308)that perform the special functions mentioned above. The KinematicsObject (307) transforms Cartesian values to joint values and theJoint-list Object (308) then transforms joint values to actuator values.The Joint-list Object (308) preferably contains a specificjoint-actuator object for each joint of the machine tool beingcontrolled. Thus the joint-to-actuator transformation is performed by aseparate joint-actuator object for each joint. The actuator positionsand rates are then passed to the software servo-controller (306). TheKinematics Object and Joint-actuator Objects that the Motion Controller(305) uses are actually derived from base classes and will be different,based on the type of transformation that they represent (e.g., 3 or5-axis machine tool for the Kinematics, and geared or ball screw for theJoint-actuator).

The servo-controller application (306) contains pointers to objects thatperform tasks like closing the servo-control loops and communicatingwith the motors. (See FIGS. 4 & 5). As with the Motion Controller (305),the servo-controller application (306) contains objects that are alsoderived from base classes. For example, the servo-controller containsobjects that execute the servo-control loop, but the object will be oneof various derived classes based on the control law that it implements(e.g., PID, etc.).

Machining information is preferably sent from the CAD Interpreter (301)to the Motion Controller (305) through a C++ object called a MotionObject (302). After the Motion Controller (305) receives the MotionObject (302) from the CAD Interpreter (301), it gets all necessary toolpath information by querying the Motion Object (302). The Motion Object(302) is created by the CAD Interpreter (301) and tells the MotionController (305) the position and orientation that the tool needs to bein at any time during movement of the tool head along the tool path. TheMotion Processor (305) then utilizes the C++ objects that it contains,as described above, to transform the tool position, orientation, etc.,into the actuator values that the servo-controller (306) will use. Theservo-controller (306) will then use control laws, which have beenstored in the system and are specific to the machine tool beingcontrolled, to calculate the torques to apply to the motors of themachine tool to achieve those values.

FIG. 4 illustrates an embodiment of the present invention in whichanalog motors are used to drive the parts of the machine tool to movethe machine head through the desired tool path. In such an embodiment,the servo-controller (306) includes digital-to-analog drivers (402) thatcommunicate digital control signals for the motors (406) to adigital-to-analog converter board (404) in the system interface (206).The analog control signals from the converter board (404) are thenamplified (407) and provided to the motors (406). A sensor (405)associated with each motor (406) senses, for example, the actual torque,the position, velocity and acceleration of the motor (405) and providesan analog signal to an analog-to-digital converter board (403) in thesystem interface (206). The digitized sensor signals are then providedto analog-to-digital drivers (401) of the servo controller (306) tocomplete the feed-back loop that will allow the servo-controller (306)to drive the motors (406) as desired according to the specified toolpaths.

This process can be, and is preferably, implemented entirely as softwarewith no additional hardware required. Thus, closed hardwarearchitectures can be eliminated.

FIG. 5 illustrates a second embodiment of the present invention in whichdigital motors are used to drive the parts of the machine tool to movethe machine head through the desired tool path. In this embodiment, thesystem interface (206) includes a serial communications device (502)that communicates over a high-speed data network (506) with the digitalmotor interface (503) of each motor unit. Control signals specifyingtorque set points are received by the digital motor interface (503) andconverted into an analog signal which is then amplified with a motor amp(504) and used to drive the respective motors (505) as necessary to movethe machine tool through the specified tool paths. As above, sensorcomplete the servo-loop which can be entirely software driven.

As described herein, the Direct Machining method and system of thepresent invention provide a wealth of advantages over traditionalmachining techniques. Direct Machining eliminates many of the problemsassociated with the current design-to-manufacturer processes because ofthe use of the true design geometry instead of just the discrete pointdata used in CL files and M&G code. Because machining is based on theoriginal design geometry, there is no geometric information loss orapproximation.

Additionally, because there are no new files created, there is noproblem with obsolete CL and M&G files residing on the system whichmight inadvertently be used to incorrectly machine a part. Changes tothe design file are directly reflected in the operation of thecontrolled machine tool. There are also indirect advantages associatedwith direct machining and having shop floor access to the originalmodel. While many machining centers are capable of doing in-processinspection, with the CAD model resident in the controller (200) thisinspection can be done using a touch probe and evaluated against themodel itself as opposed to an extrapolation from cutter location pointsin the M&G file. Additionally, the controller (200) could be required tocheck the design file out from a Product Data Management (PDM) system towhich the controller (200) is networked, further eliminating thepossibility of machining obsolete parts.

An example, of the method of creating tool paths from the CAD file (309)and generating the Motion Object to incorporate that tool path data willnow be described in more detail. In general, there are two types ofmachining: roughing and finishing. Roughing removes the majority of thematerial from the stock, while finishing tries to match the surface ofthe stock to an exact surface specified for the part. In this example,we will only concern ourselves with finishing tool paths in millingoperations.

Tool paths represent the path that the center of the tip of the toolhead of the machine tool follows, not the path of the point of tangencybetween the surface of the part and the tool. In some simple operations,like face milling, the tool tip is the tangent point, so the tool pathslie directly on the machined surface. In slightly more complexmachining, such as machining pockets, the side of the end mill does thecutting. In this case, the tool paths lie on a surface offset from themachined surface at a distance of the radius of the tool.

Things are a little more complicated when machining free-form surfacesbecause such surfaces are often machined using ball end mills that havea spherical tip with the same radius as the tool. Tool tip locations arecalculated for ball end mills using the following equation:P(s,t)=Q(s,t)+RN(s,t)−[0,0,R]where R is the radius of the ball end mill, Q(s,t) are the tangencypoints and N(s,t) the surface normals at each tangency point Q(s,t). Ifthe spherical tip of the tool is tangent to the part surface, the centerof the tool tip will lie on a surface that is offset from the partsurface by the radius of the tool. If the tool is aligned vertically, asit is in 3-axis machining, then the tool tip is exactly one radius lowerin the Z direction than the center of the spherical portion of the tool.In order to create the surface that the tool tip follows, a surface isoffset from the machined surface and then lowered along the Z-axis bythe radius of the ball end mill. This surface is then intersected withvertical planes to define actual tool paths.

In the C++ environment described above, all Motion Objects passed to theMotion Controller (305) are actually members of classes derived from theMotion Object (302). There can be many different derived classes fromthe Motion Object (302) for specific control purposes. The elegance ofthis arrangement is that the Motion Controller (305) never knows whattype of Motion Object is passed to it. As long as the passed object hasthe interface of the Motion Object (302), the Motion Controller (305)doesn't need any additional information. This means that new MotionObjects can be developed and integrated in the CAD Interpreter (301) andthe Motion Controller (305) can understand them without being updateditself.

As noted above, the motion object passed to the Motion Controller (305)will typically specify tool paths in Cartesian coordinates. This is aconvenient way to specify motion that is to follow a prescribed pathlike that in machining operations. Consequently, a specific child classof the Motion Object (302) may be called the Basic Cartesian MotionObject class. For simplicity, all references to a Motion Object willhereafter be understood to refer to a Basic Cartesian Motion Object.

As illustrated in FIG. 6, these derived Motion Objects (600) preferablycontain three members of special classes: a Rates Object (601), aVelocity Profile Generator (“VPG”) Object (602), and a Path Object(603). The Rates Object (601) determines the feeds and speeds to beused, the VPG Object (602) controls the velocity transitions and thePath Object (603) contains all the information about the geometry of thepath.

Just like the Motion Object (600), the Path Object (603) is also a baseclass from which specific paths are derived. Path Objects (603) storethe geometry as a parametric equation. With these parametric equations,the Path Object (603) can tell the Motion Object (600) the desiredposition and orientation of the tool at any point along the curve. TheMotion Object (600) combines this geometry with the informationcontained in the Rates Object (601) and the VPG Object (602), andcalculates position and orientation at any time. Because the PathObjects (603) are always members of derived classes, the Motion Objectdoesn't need a specification of the type of Path Object that it isworking with.

This mode of transferring geometry to the controller is very differentfrom what is currently being done with M&G code, and has somesignificant implications. In the prior art system of FIG. 1, the machinetool controller (104) is given the minimum amount of geometricalinformation needed to define the tool path. The controller (104) thenuses this geometry to interpolate a continuous motion path. For example,two end points define a line segment, and two end points, a centerpoint, and a direction of rotation define a helix or arc.

Using the polymorphic C++ objects of the present invention to passgeometrical information does not require the Motion Controller (305) toknow what type of path it has received. Further, the path is only knownas a general curve that can tell the Motion Controller (305) itsgeometry to any level of detail necessary.

The use of polymorphic C++ objects as described herein involves a muchgreater amount of data processing and storage than has been required inprevious systems such as illustrated in FIG. 1. This is not asignificant problem, however, because modem controllers are fast enoughand have enough memory to handle such an increase in data flow. Onesignificant advantage of Direct Machining is that the controllerreceives exactly the amount of information that it needs. Eventually,all curves must be broken down into small, discrete segments when theI/O commands are sent to the drive motors. Conventionally, the curve isdiscretized by the CAM program when exporting an APT file. In DirectMachining, the Motion Controller discretizes the curve. This allows thecontroller to machine at its best tolerance all the time.

The preceding description has been presented only to illustrate anddescribe the invention. It is not intended to be exhaustive or to limitthe invention to any precise form disclosed. Many modifications andvariations are possible in light of the above teaching.

The preferred embodiment was chosen and described in order to bestexplain the principles of the invention and its practical application.The preceding description is intended to enable others skilled in theart to best utilize the invention in various embodiments and withvarious modifications as are suited to the particular use contemplated.It is intended that the scope of the invention be defined by thefollowing claims.

1. A system for interfacing a control system with a servo-driven machinecomprising: a first processor executing a design application thatgenerates motion path data; a second processor, that interfaces withsaid first processor, said second processor executing motion controlsoftware that accesses said motion path data from said designapplication on said first processor; and wherein said motion controlsoftware controls the servo-driven machine in accordance with saidmotion path data, and is object oriented such that objects of saidmotion control software are adaptable to allow the control system tointerface with a different servo-driven machine.
 2. The system of claim1, wherein the servo-driven machine is a machine tool for machiningstock material according to design specifications.
 3. The system ofclaim 1, wherein said design application is a computeraided-design/computer-aided-manufacturing software package.
 4. Thesystem of claim 1, wherein motion control software extracts said motionpath data from said design application using an Application ProgramInterface of said design application.
 5. The system of claim 1, whereinsaid design application passes said motion path data to said motioncontrol software through an Application Program Interface of said motioncontrol software.
 6. The system of claim 1, wherein said system furthercomprises a display device and user input device interfaced with saidfirst processor for generating, reviewing or editing said motion path,data with said design application.
 7. The system of claim 1, wherein:said design application produces a motion object containing said motionpath data, said motion path data defining motion paths along which atool head of the servo-driven machine is to be moved; and said designapplication passes said motion object to said motion control software onsaid second processor.
 8. The system of claim 7, wherein said motionobject comprises: a rates object that determines feed rates and speedrates for control of members of the servo-driven machine; a velocityprofile generator object for controlling velocity transitions in saidmotion paths; and a path object containing information defining eachmotion path.
 9. The system of claim 1, wherein: said motion controlsoftware accesses motion path data through said design application, saidmotion path data defining motion paths along which a tool head of theservo-driven machine is to be moved; and said motion control softwareproduces a motion object containing said motion path data.
 10. Thesystem of claim 1, wherein said motion path data output by said designapplication specifies tool paths in a Cartesian coordinate system andsaid motion control software translates the tool paths into servocontrol signals for driving motors of the servo-driven machine.
 11. Thesystem of claim 1, wherein: said motion control software comprises amotion controller application and a servo controller application; saidmotion controller application maps said motion path data into acoordinate system defined by the servo-driven machine; and said servocontroller application generates controls signals for transmission toservos of the servo-driven machine in accordance with said mapped motionpath data from said motion controller application.
 12. The system ofclaim 1, wherein said first processor and said second processorinterface within a multi-processor computer workstation.
 13. A method ofoperating a machine tool for machining a supply of stock materialaccording to a specified design, the method comprising extracting toolpath data from a design within a computer-aided-design/computer-aidedmanufacture software package through an Application Program Interface ofsaid computer-aided-design/computer-aided-manufacturing softwarepackage.
 14. The method of claim 13, further comprising controlling saidmachine tool in accordance with said tool path data such that specifiedelements of said machine tool are moved along tool paths defined by saidtool path data extracted from said design.
 15. The method of claim 13,further comprising: modifying said design with saidcomputer-aided-design/computer-aided-manufacturing software package;extracting modified tool path data from said modified design; andcontrolling said machine tool in accordance with said modified tool pathdata such that specified members of said machine tool are moved alongtool paths defined by said modified tool path data extracted from saidmodified design.
 16. A method of interfacing a control system with aservo-driven machine comprising: executing a design application thatgenerates motion path data for said servo driven machine; executingmotion control software that receives said motion path data in a sameform as output by said design application; and controlling theservo-driven machine with said motion control software in accordancewith said motion path data from said design application.
 17. The methodof claim 16, further comprising executing said design application andsaid motion control software on different processors.
 18. The method ofclaim 16, further comprising machining stock material with theservo-driven machine, which is a machine tool, to make a product definedby said motion path data.
 19. The method of claim 16, wherein saiddesign application is acomputer-aided-design/computer-aided-manufacturing software package. 20.The method of claim 16, further comprising: using acomputer-aided-design software package to generate a file in which toolpaths are specified rather than end product geometry; and generatingsaid motion path data from said file with said design application. 21.The method of claim 16, further comprising editing said motion path datawith said design application.
 22. The method of claim 16, furthercomprising reviewing said motion path data with said design application.23. The method of claim 16, further comprising: generating, with saiddesign application, a motion object containing said motion path data,said motion path data defining motion paths along which members of theservo-driven machine are to be moved; and passing said motion object tosaid motion control software.
 24. The method of claim 16, wherein saidmotion path data output by said design application specifies tool pathsin a Cartesian coordinate system and said method further comprisestranslating said tool paths into servo control signals for drivingmotors of the servo-driven machine.
 25. A system for interfacing acontrol system with a servo driven machine comprising: means forgenerating motion path data for the servo-driven machine; means forexecuting motion control software that receives said motion path data ina same form as output by said means for generating said motion pathdata; and means for controlling the servo-driven machine in accordancewith said motion path data.
 26. The system of claim 25, wherein theservo-driven machine comprises means for machining stock material tomake a product defined by said motion path data.
 27. The system of claim25, wherein said means for generating motion path data comprises acomputer-aided-design/computer-aided-manufacturing software package. 28.The system of claim 25, further comprising means for reviewing andediting said motion path data.
 29. A system for interfacing a controlsystem with a servo-driven machine comprising: a first processorexecuting a design application that generates motion path data; a secondprocessor, that interfaces with said first processor, said secondprocessor executing motion control software that receives said motionpath data from said design application on said first processor passedthrough an Application Program Interface of said motion controlsoftware; and wherein said motion control software controls theservo-driven machine in accordance with said motion path data.
 30. Thesystem of claim 29, wherein the servo-driven machine is a machine toolfor machining stock material according to design specifications.
 31. Thesystem of claim 29, wherein said design application is a computeraided-design/computer-aided-manufacturing software package.
 32. Thesystem of claim 29, wherein said system further comprises a displaydevice and user input device interfaced with said first processor forgenerating, reviewing or editing said motion path data with said designapplication.
 33. The system of claim 29, wherein: said designapplication produces a motion object containing said motion path data,said motion path data defining motion paths along which a tool head ofthe servo-driven machine is to be moved; and said design applicationpasses said motion object to said motion control software.
 34. Thesystem of claim 33, wherein said motion object comprises: a rates objectthat determines feed rates and speed rates for control of members of theservo-driven machine; a velocity profile generator object forcontrolling velocity transitions in said motion paths; and a path objectcontaining information defining each motion path.
 35. The system ofclaim 29, wherein said motion path data output by said designapplication specifies tool paths in a Cartesian coordinate system andsaid motion control software translates the tool paths into servocontrol signals for driving motors of the servo-driven machine.
 36. Thesystem of claim 29, wherein: said motion control software comprises amotion controller application and a servo controller application; saidmotion controller application maps said motion path data into acoordinate system defined by the servo-driven machine; and said servocontroller application generates controls signals for transmission toservos of the servo-driven machine in accordance with said motion pathdata from said motion controller application.
 37. The system of claim29, wherein said first processor and said second processor interfacewithin a multi-processor computer workstation.
 38. A system forinterfacing a control system with a servo-driven machine comprising: afirst processor executing a design application that produces a motionobject containing said motion path data, said motion path data definingmotion paths along which a tool head of the servo-driven machine is tobe moved; generates motion path data; a second processor, thatinterfaces with said first processor, said second processor executingmotion control software that receives said motion object from saiddesign application on said first processor; and wherein said motioncontrol software controls the servo-driven machine in accordance withsaid motion path data.
 39. The system of claim 38, wherein theservo-driven machine is a machine tool for machining stock materialaccording to design specifications.
 40. The system of claim 38, whereinsaid design application is a computeraided-design/computer-aided-manufacturing software package.
 41. Thesystem of claim 38, wherein said system further comprises a displaydevice and user input device interfaced with said first processor forgenerating, reviewing or editing said motion path data with said designapplication.
 42. The system of claim 38, wherein said motion objectcomprises: a rates object that determines feed rates and speed rates forcontrol of members of the servo-driven machine; a velocity profilegenerator object for controlling velocity transitions in said motionpaths; and a path object containing information defining each motionpath.
 43. The system of claim 38, wherein said motion path data outputby said design application specifies tool paths in a Cartesiancoordinate system and said motion control software translates the toolpaths into servo control signals for driving motors of the servo-drivenmachine.
 44. The system of claim 38, wherein: said motion controlsoftware comprises a motion controller application and a servocontroller application; said motion controller application maps saidmotion path data into a coordinate system defined by the servo-drivenmachine; and said servo controller application generates controlssignals for transmission to servos of the servo-driven machine inaccordance with said motion path data from said motion controllerapplication.
 45. The system of claim 38, wherein said first processorand said second processor interface within a multi-processor computerworkstation.